/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import modelos.ModeloOrden;
import modelos.ModeloProducto;
import vistas.VistaOrden;

/**
 *
 * @author usuario
 */
public class ControladorOrden implements ActionListener{

    private VistaOrden vista;
    private ModeloOrden modelo;
    private LinkedList<ModeloProducto> prodcutos;

    public ControladorOrden(VistaOrden aThis) {
        vista=aThis;
        modelo= new ModeloOrden();
        prodcutos= new ModeloProducto().consultarGeneral();
        cargarDescripciones();
        vista.addListener(this);
    }

    public void cargarDescripciones(){
        Vector<String> descripciones = new Vector<String>();
        for (int i = 0; i < prodcutos.size(); i++)
            descripciones.add(prodcutos.get(i).getDescripcion());
        vista.cargarComboProductos(descripciones);
    }

     public ModeloProducto buscarProducto(String descrpicion){
        for (int i = 0; i < prodcutos.size(); i++)
            if(prodcutos.get(i).getDescripcion().equals(descrpicion))
                return prodcutos.get(i);
        return null;
    }

     public void actionPerformed(ActionEvent ae) {
         if(ae.getActionCommand().equals("Registrar")){
                if(vista.hayVacios())
            if(vista.validoNumeros()){
            modelo.setCodigo(Integer.parseInt(vista.getTxtCodigo().getText()));
            modelo.setCedula(vista.getTxtCedula().getText());
            modelo.setTotal(Float.parseFloat(vista.getTxtTotal().getText()));
            modelo.setEstatus("A");
            if(modelo.registrar()){
                LinkedList<Integer> c = new LinkedList<Integer>();
                LinkedList<Integer> p = new LinkedList<Integer>();
                LinkedList<String []> f= vista.getInfoTabla();
                for (int i = 0;i<f.size();i++) {
                    String[] dato = f.get(i);
                    c.add(buscarProducto(dato[0]).getCodigo());
                    p.add(Integer.parseInt(dato[1]));
                }
                modelo.registarProductos(c, p);
                for (int i = 0;i<p.size();i++) {
                    Integer dato = c.get(i);
                    modelos.ModeloProducto m = new modelos.ModeloProducto();
                    m.setCodigo(dato);
                    int j =0;
                    while(j<p.get(i)){
                    	m.restarStockIngredientes();
                    	j++;
                    }
                }
           vista.mostrarMensaje("Orden registrada exitosamente");
           vista.limpiar();
       }
       else
           vista.mostrarMensaje("El codigo ya se encuentra registrada");

    }

        }
        else if(ae.getActionCommand().equals("Salir")){
            vista.setVisible(false);
            vista.limpiar();
        }
        else if(ae.getActionCommand().equals("Mas")){
            if(vista.validarCantidad())
                vista.agregarFila(vista.getRegistro(),buscarProducto(vista.getRegistro()[0]).getPrecio());
        }
        else if(ae.getActionCommand().equals("Menos")){
            vista.menos();
        }
        else{
            vista.limpiar();
        }
    }    
}
